package com.ruoyi.framework.mybatisplus.strategy.strategies;

import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
import com.ruoyi.framework.mybatisplus.OperateSymbol;
import com.ruoyi.framework.mybatisplus.strategy.AbstractQueryStrategy;


import java.lang.reflect.Field;

/**
 * 等值查询策略实现类
 * 用于处理等于（=）查询条件
 * 字段名需要以"Eq"结尾才会匹配此策略
 * 
 * @author xuzhen97
 */
public class EqualStrategy extends AbstractQueryStrategy {
    
    /**
     * 构造函数
     * 设置操作符为等于（EQ）
     */
    public EqualStrategy() {
        super(OperateSymbol.EQ);
    }

    /**
     * 应用查询条件
     * 将字段值作为等值条件添加到查询包装器中
     * 
     * @param prefix 字段前缀
     * @param obj 查询对象
     * @param key 字段名
     * @param field 字段对象
     * @param wrapper 查询包装器
     */
    @Override
    public void apply(String prefix, Object obj, String key, Field field, AbstractWrapper wrapper) {
        String fieldName = getFieldName(key, field);
        Object value = getValue(obj, field);
        if (isValidValue(value)) {
            wrapper.eq(prefix + fieldName, value);
        }
    }
} 